class Product < ActiveRecord::Base
  has_many :orders, :through => :line_items
  has_many :line_items
  
  def self.find_products_for_sale
    find(:all, :order => "title")
  end
  
  
  
  validates_presence_of :title, :description, :image_url
  validates_uniqueness_of :title
  validate :must_be_at_least_ten
  validates_numericality_of :price
  validate :price_must_be_at_least_a_cent
  validates_format_of :image_url,
                      :with    => %r{\.(gif|jpg|png)$}i,
                      :message => 'must be a URL for GIF, JPG or PNG image' 
protected 
  def price_must_be_at_least_a_cent
    errors.add(:price, 'price should be at least 0.01') if price.nil? || price < 0.01
  end
  
  def must_be_at_least_ten
    errors.add(:title, 'title must be at least 10 characters') if title.nil? || title.size < 10
  end
end
